package com.pansoft.generator;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.nio.file.Paths;

public class CodeGenerator {
    public static void main(String[] args) {
        // 数据库连接信息
        String url = "jdbc:kingbase8://192.168.254.109:54321/cmdata_kp?currentSchema=cm_kp"; // 替换为你的数据库URL
        String username = "cm_kp"; // 替换为你的数据库用户名
        String password = "king##88CCDD"; // 替换为你的数据库密码

        // 代码生成器配置
        FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> builder
                        .author("YourName") // 设置作者
                        .outputDir("D:\\generator\\src\\main\\java\\com\\pansoft\\generator\\code\\") // 设置输出目录
                        .commentDate("yyyy-MM-dd") // 设置注释日期格式
//                        .fileOverride(true) // 覆盖已有文件
                        .disableOpenDir() // 生成完成后不打开目录
                )
                .packageConfig(builder -> builder
                        .parent("com.example") // 设置父包名
                        .entity("entity") // 设置实体类包名
                        .mapper("mapper") // 设置 Mapper 接口包名
                        .service("service") // 设置 Service 接口包名
                        .serviceImpl("service.impl") // 设置 Service 实现类包名
                        .xml("mapper.xml") // 设置 XML 文件目录
                )
                .strategyConfig(builder -> builder
                        .addInclude("sw_dct_fpztzd") // 设置要生成的表名
                        .entityBuilder() // 实体类配置
                        .enableLombok() // 启用 Lombok
                        .enableTableFieldAnnotation() // 启用字段注解
                        .controllerBuilder() // Controller 配置
                        .enableRestStyle() // 启用 RestController
                        .mapperBuilder() // Mapper 配置
                        .enableMapperAnnotation() // 启用 @Mapper 注解
                        .serviceBuilder() // Service 配置
                        .formatServiceFileName("%sService") // 设置 Service 接口文件名格式
                        .formatServiceImplFileName("%sServiceImpl") // 设置 Service 实现类文件名格式
                )
                .templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 模板引擎
                .execute(); // 执行生成
    }
}